import request from "@/utils/request";

// 限制单个属性值的类型
export interface AttrValueItemType {
    id?: number,         // 添加不需要 修改需要
    valueName: string,   // 属性值名
    attrId?: number,      // 后端会给值
    isEdit?: boolean,     // 功能需要 发请求不需要 为了设置 显示文本框还是输入框
}

// 限制整个保存属性值的数组的类型
export type AttrValueListType = AttrValueItemType[]

// 限制单个属性的类型
export interface AttrInfoItemType {
    id?: number,           // 属性名ID
    attrName: string,      // 属性名
    categoryId: number,    // 增修都是三级列表筛选完的值  默认 category3Id 的值
    categoryLevel: number,  // 等级 3
    attrValueList: AttrValueListType,  // 属性值的数组
    selectData?: string   // 保存添加需要的 attrId 和 attrValueId
}

// 限制整个保存属性的数组的类型
export type AttrInfoListType = AttrInfoItemType[]

// 1- 获取三级列表筛选出来的 属性列表数据
export const reqGetAttrInfoList = (category1Id: number, category2Id: number, category3Id: number) => {
    return request.get<null, AttrInfoListType>(`/admin/product/attrInfoList/${category1Id}/${category2Id}/${category3Id}`)
}

// 2- 添加/修改的请求
export const reqAddOrUpdateAttrInfoListAsync = (AttrInfo: AttrInfoItemType) => {
    return request.post<null, null>(`/admin/product/saveAttrInfo`, AttrInfo);
};

// 3- 删除属性的请求
export const reqDeleteAttrAsync = (attrId: number) => {
    return request.delete<null, null>(`/admin/product/deleteAttr/${attrId}`);
};
